﻿#region 版权声明





//



// 
// 代码开源主要用于解决大家在学习和研究协议过程中遇到由于缺乏代码所带来的制约性问题。
// 本代码仅供学习交流使用，大家在使用此开发包前请自行协调好多方面关系，
// 不得用于任何商业用途和非法用途，本人不享受和承担由此产生的任何权利以及任何法律责任。
// 
// 本源代码可通过以下网址获取:
// http://www.vckers.com
//
// Copyright @ 2009-2010  vckers.com.  All Rights Reserved.   
// Framework: 3.5

  

 
//   
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. 
  
#endregion

using System;
using System.Collections.Generic;
using System.Text;

namespace TS.QQ.Entities
{
    /// <summary>
    /// QQ2009消息Face
    /// </summary>
    public class NormalIMFace
    {
       public QQClient QQClient { get; set; }
       public int FaceId { get; set; }
       public byte[] FFData { get; set; }
       public byte[] RemainBytes { get; set; }
       public NormalIMFace(QQClient qqClient, byte[] buffer)
       {
           QQClient = qqClient;
           ByteBuffer buf = new ByteBuffer(buffer);
           Read( buf);
       }

       public void Read( ByteBuffer buf)
       {
           while (buf.HasRemaining())
           {
               byte type = buf.Get();
               int len = buf.GetUShort();
               switch (type)
               { 
                   case 0x01:
                       FaceId = buf.Get();
                       break;
                   case 0xff:
                       FFData = buf.GetByteArray(len);
                       break;
                   default:
                       QQClient.LogManager.Log(base.ToString()+" Parse Error,Unknown Type=" + type.ToString("X") + ": Data=" + Utils.Util.ToHex(buf.GetByteArray(len)));
                       break;
                    
               }
           }
           if (buf.HasRemaining())
           {
               RemainBytes = buf.GetByteArray(buf.Remaining());
               QQClient.LogManager.Log(base.ToString() + " Class Parse Buf Remaining Data:" + Utils.Util.ToHex(RemainBytes));
           }
       }

       public override string ToString()
       {
           return "[face" + FaceId.ToString() + ".gif]";
       }
    }
}
